Abschlussprojekt

Das Abschlussprojekt besteht aus 2. Teilen, wobei der 1.Teil 30% und der 2.Teil 70% in der Gewichtung ausmacht.

Die Dokumentation und Beantwortung der Fragen kann in englisch oder deutsch erfolgen.

Im 2.Teil soll eine explorative Datenanalyse durchgeführt werden. Dafür ist der Datensatz zunächst vorzubereiten. In die Bewertung geht zudem die Dokumentation mit ein. Für die Visualisierung sind 3 verschiedenartige Plots zu benennen, die in die Bewertung eingehen sollen. Vergiss dabei nicht die Erkenntnisse die aus jedem Plot gezogen werden können, zu notieren.

Am Freitag erfolgt die Vorstellung der Plots innerhalb des Zeitrahmens von 5min (+-1min) ist dabei ok.

Treff ist Donnerstag um 16:00 Uhr im Hauptraum. Da werden wir die Unterlagen in dokumentsichere Formate umwandeln. Das machen wir aber zusammen. Danach habt ihr bis 17:10 Uhr zeit, eure zu bewertenden Unterlagen in den Projektabgabeordner hochzuladen.

1. Teil - Theoriefragen

1.1) 4 V´s

Erkläre die 4 V´s mit deinen eigenen Worten anhand eines Beispiels. Vergiss dabei nicht die 4 V´s thematisch einzuordnen.

Die 4 V's dienen dazu abzuschätzen, ob ein Big Data Thema vorliegt.

1.2) fehlende Werte

a.) Erkläre anhand eines selbstgewählten Beispiels was fehlende Werte sind.

Ein Temperatursensor ist ausgefallen und kann keine Temperatur mehr messen. Im Messprotokoll sind ab Zeitpunkt des Ausfalls fehlende Angaben, sprich keine Zahlen hinterlegt, z.B. NaN (not a number) oder '-'. Es können auch Synonyme sein, wie '?', 'missing'.

b.) Warum muss sich bei der Datenanalyse damit beschäftigt werden?

Weil man damit eine Lücke in den Daten hat. Für die spätere Visualisierung werden fehlende Werte wie gelöscht angesehen. Es könenn auch keine Berechnungen durchgeführt werden. Daher ist zu überlegen, ob man die gesamte Zeile löscht mit dem Risiko von Datenverlust, oder man befüllt die fehlenden Werte, bspw. mit dem Mittelwert der Temperatur vor und nach dem Ausfall des Sensors oder man ersetzt sie mit Daten von einem anderen Sensor.

c.) Wie können fehlende Werte in der Datenanalyse identifiziert werden?

2. Teil - Praxis

Du arbeitest als Data Scientist in einem Start Up. Ihr habt vor einem Jahr euer Geschäft eröffnet und nun wollt ihr den nächsten Schritt gehen und eure Dienste erweitern. Euer Geschäftsmodell ist das Betreiben einer Plattform bei der sich Personen die eine Geschäftsidee haben, aber nicht das benötigte Geld, anmelden und für ihr Projekt innerhalb einer vorgegebenen Zeit Geld sammeln können. Auf der anderen Seite habt ihr Geldgeber, die gern ihr Geld in Projekte anlegen möchten und nach Investitionen suchen. Als Vermittler bringt eure Plattform also Geldnehmer und Geldgeber zusammen. Ihr verdient euer Geld mit einer Provision für jedes Projekt was auf eurer Plattform landet.

Deine Datenbasis ist die Historie eurer Plattform. Alle Projekte sind abgeschlossene Projekte, d.h. die Zeit, um für sein Projekt Geld zu sammeln ist abgelaufen. Euer Geschäftsmodell sieht es vor, dass die gesammelten Gelder ausgezahlt werden, auch wenn der Zielbetrag nicht erreicht wurde.

In dem Datensatz gibt es KEINE Duplikate.

Der gesplittete Datensatz enthält folgende Spalten (inkl. Bedeutung):

- funded_amount ... mit Ablauf der Crowdfundingzeit erhaltener Betrag/ ausgezahlter Betrag in USD
- loan_amount ... Zielbetrag (Betrag dem man mit Funding erreichen wollte) in USD
- activity ... Unterkategory zu dem das Ziel des Crowdfunding thematisch gehört
- sector ... Oberkategory in den das Crowdfunding Thema fällt
- use ... Kurzbeschreibung wofür das Geld verwendet werden soll
- country_code ... Ländercode nach ISO Norm
- country ... Ländername nach ISO Norm
- region ... Region
- currency ... Währung in den der funded_amount dann ausgezahlt wurde
- term in months ... Dauer über die der Kredit ausgezahlt werden soll
- lender_count ...Darlehensgeber (also wieviele Personen Geld für das Projekt gegeben haben)
- borrower_genders ... Geschlecht und Anzahl der Darlehensnehmer, also diejenigen die das Crowdfundingprojekt                                  initiiert haben
- repayment interval ... Rückzahlungsmodalitäten/-rhythmus

Daten einlesen

Beide Dateien haben unterschiedliche Separator. Part1 das Komma, Part2 die Raute. Folgend werden beide mit dem korrekten Separator geladen.

Beide Dataframes können zeilenweise gemerged werden, da sie die gleiche Struktur haben, die selben Spaltennamen, die selben Datentypen. Aus irgendeinem Grund erzeugt .merge() mit how='outer' mehr Zeilen als beide Dataframes zusammen haben müssten. Das Problem wird durch die .concat() Funktion gelöst.

Mit den Daten vertraut machen

Die Erstinspektion der Daten zeigt folgendes:

Systemseitig erkannte Fehlwerte (NaN):

Alle numerische Spalten werden in der statistischen Übersicht aufgeführt und sind numerische Datentypen, enweder Float oder Integer:
kein Hinweis auf Mischdatentypen, sprich Synonyme, in diesen Spalten.
Desweiteren gibt es keine unsinnigen Werte, wie extrem hohe oder Negativwerte. Minimalwerte liegen bei funded_amount und lender_count bei 0. Dies ergibt Sinn, da es für einen ausgezahlten Betrag von 0 keinen Förderer gegeben hat. Die Float Spalten sollten in der späteren Speicherreduktion auf Integer Typ gewandelt werden. Offensichtlich werden keine Cent-Beträge ausgezahlt und nur über volle Monate.

Im Pairplot und der Korrelationsmatrix ist eine 1:1 Korrelation zwischen loan_amount, funded_amount und lender_count zu erkennen. Je höher der geforderte Geldbetrag, desto höher die Anzahl der Förderer.

Fehlende Werte

Identifizieren

Systemseitige NaN Werte sind in den nächsten zwei Zellen abgebildet. Im weiteren geht es darum Synonyme aus den object Spalten herauszufiltern.

Selbst wenn es in der use Spalte merkwürdige Einträge gibt, sind es nur Formateigenheiten. Die Korrektur der Einträge macht keinen Sinn, der Text ist zu verstehen. Alle anderen möglichen Synonyme zu finden dauert zu lang und ist auch nicht sinnvoll. Es sind zu viele eigene Einträge und beschreibt lediglich das Projekt genauer. Diese Spalte wird in der EDA keine weitere Rolle spielen.

Zusammenfassung
Die Object Spalten activity, sector, country, currency und repayment_interval enthalten keine NaN und keine Synonyme. Die Spalten sind damit korrekt aufbereitet.

Die Spalten use, country_code, region, borrower_genders enthalten NaN. Mit Ausnahme der Spalte country_code können die NaN nicht ersetzt werden. Es gibt zu viele unique values, als dass man einen logischen Zusammenhang zu anderen Spalten herstellen kann. Synonyme wurden nicht gefunden, da die Menge der unique values zu groß ist, um sie schnell zu überblicken. In der späteren EDA stellt sich die Frage, ob diese Spalten überhaupt relevant sind. Die Zeilen zu löschen macht auch keinen Sinn, da sonst zu viele wertvolle Daten verloren gehen.
Für die Spalte country_code kann der Wert aus anderen Zeilen mit dem selben country verwendet werden.
Die Spalte borrower_genders kann in zwei separate Spalten zerlegt werden, die die Anzahl der jeweils männlichen und weiblichen Darlehensnehmer aufnimmt. Dies macht aber auch nur bei Zeilen ohne NaN Sinn.

Beseitigen

Wie bereits vorher ausgeführt, können nur in der country_code Spalte NaN's ersetzt werden. Dies soll im Folgenden getan werden.

Laut Wikipedia https://de.wikipedia.org/wiki/ISO-3166-1-Kodierliste#N ist der Ländercode nach ISO 3166 ALPHA-2 für Namibia: NA. Dieser Wert wird in die Zeilen mit NaN eingetragen.

Ausreißer

Ausreißer sind in diesem Zusammenhang nicht zu betrachten.
Hier ist jedes Projekt einzigartig. Es wird nicht eine Gruppe von Messwerten betrachtet, sondern eigenständige Angaben der Darlehensnehmer/Firmenmitarbeiter individuell zu jedem Projekt. Hohe Geldbeträge, lange Laufzeiten und eine größere Anzahl an Förderern sind zu erwarten. Es wird aber später auf einzelne Projekte geschaut, die beispielsweise keine Förderung bekommen haben, die am meisten Geld angefragt haben und solche, die eine lange Laufzeit haben.

Features: Spalten mit neuem Informationsgehalt

borrower_genders

Die einzige Spalte mit zu viel Inhalt ist die borrower_genders. Im Folgenden werden die Informationen daraus in neue Spalten überführt, die die Anzahl der männlichen und weiblichen Darlehensnehmer beinhalten. Somit erhält man einen Einblick in die Größe der Mitarbeiter des Crowdfundingprojekts.

Wo wurde nicht vollständig finanziert: Differenz

Es wird die Differenz als difference_amount angegeben, um die Geldbeträge zu sehen, welche für die erfolgreiche Finanzierung gefehlt haben.

Erfolgsquote

Die Erfolgsquote wird als Verhältnis funded_amount zu loan_amount dargestellt.

Finanzierungsstatus

Es werden Kategorien von nicht finanziert bis überfinanziert eingetragen.

Durchschnittlicher Betrag pro Darlehensgeber

Der durchschnittlicher Betrag pro Darlehensgeber ergibt sich aus dem Verhältnis von funded_amount zu lender_count.

Speicherplatz optimieren

Speicherplatz optimierte Kopie des DataFrames

Floats in Integer

Object in Category

Float64 in Float32

Spalten löschen

Berechnung der Reduktion des Speicherplatzes

Sicherung des Speicherplatzoptimierten DataFrames als .pkl-Datei